﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using OsPortal;
using System.Web.UI;
using System.Web.Caching;
using System.Data.SqlClient;

/// <summary>
/// Summary description for clsKhuVuc
/// </summary>
public class clsKhuVuc
{
    static string strClassName = "clsKhuVuc";
    public clsKhuVuc()
    {
        //
        // TODO: Add constructor logic here
        //
    }

    /// <summary>
    /// Author: NguyenTV
    /// Create Date: 10/09/2013
    /// </summary>
    /// <param name="iCurrPage">trang hiện tại</param>
    /// <param name="iPageSize">số lượng bản ghi trên 1 trang</param>
    /// <param name="strKV_ID">mã khu vực</param>
    /// <param name="strKV_TENKHONGDAU">tên không dấu</param>
    /// <param name="strKV_PARENTID">mã cha</param>
    /// <param name="KV_TRANGTHAI">1 là true - 0 là false - -1 là lấy tất cả</param>
    /// <returns></returns>
    public static DataSet KhuVuc_FND(int iCurrPage
                                    , int iPageSize
                                    , string strKV_ID
                                    , string strKV_TENKHONGDAU
                                    , string strKV_PARENTID
                                    , int KV_TRANGTHAI)
    {
        DataSet dtData = null;
        try
        {
            dtData = oSqlDataHelper.sExecuteDataSet("KHUVUC_FND", new SqlParameter[]{
                new SqlParameter("@P_CURRPAGE",iCurrPage)
                ,new SqlParameter("@P_PAGESIZE",iPageSize)
                ,new SqlParameter("@P_KV_ID",strKV_ID)
                ,new SqlParameter("@P_KV_TENKHONGDAU",strKV_TENKHONGDAU)
                ,new SqlParameter("@P_KV_PARENTID",strKV_PARENTID)
                ,new SqlParameter("@P_KV_TRANGTHAI",KV_TRANGTHAI)
            });
            return dtData;
        }
        catch (Exception ex)
        {
            OsPortal.oFileHelper.WriteLogErr(strClassName, "KhuVuc_FND", ex.ToString());
            return null;
        }
        finally
        {
            //dtData.Dispose();
        }
    }

    /// <summary>
    /// Function Name: LẤY DANH SÁCH KHU VỰC VÀ LƯU VÀO CACHE
    /// Create Date: 20/05/2012
    /// Update Date:
    /// Author: Thuannh
    /// </summary>    
    /// <returns></returns>
    public static DataTable GetAll()
    {
        // Lấy tham chiếu đến đối tượng Cache.
        Cache _cache = HttpContext.Current.Cache;
        DataTable dt = null;
        string strCacheKhuvuc = "";
        strCacheKhuvuc = "KhuVuc_All";
        if (_cache[strCacheKhuvuc] == null)
        {
            dt = oSqlDataHelper.sExecuteDataTable("SELECT * FROM KHUVUC ORDER BY KV_DOUUTIEN ASC");
            // Lưu giữ item trong cache
            // cùng với sliding expiration là 60 phút.
            if (dt != null && dt.Rows.Count > 0)
            {
                HttpContext.Current.Cache.Insert(strCacheKhuvuc, dt, null, DateTime.MaxValue, TimeSpan.FromMinutes(basConst.timeCache));
            }
        }
        else
        {
            dt = (DataTable)_cache[strCacheKhuvuc];
        }

        return dt;
    }

    /// <summary>
    /// Lấy chi tiết khu vực by id
    /// Author: ThuanNH
    /// Create: 04/09/2013
    /// </summary>
    /// <param name="KV_ID">Mã khu vực</param>
    /// <returns></returns>
    public static DataTable fncGetKhuVucBy_ID(string KV_ID)
    {
        DataTable dtTinhThanh = null;
        try
        {
            dtTinhThanh = OsPortal.oDataHelper.filterData(GetAll(), "KV_ID='" + KV_ID + "'");
        }
        catch (Exception ex)
        {
            OsPortal.oFileHelper.WriteLogErr(strClassName, "fncGetKhuVucBy_ID", ex.ToString());
        }
        return dtTinhThanh;
    }

    /// <summary>
    /// Lấy mã khu vực by tên không dấu
    /// Author: ThuanNH
    /// Create: 11/10/2013
    /// </summary>
    /// <param name="strTen">Ten Khong Dau</param>
    /// <returns></returns>
    public static String fncGet_ID_KhuVucBy_TenKodau(string strTen)
    {
        return fncGetValue_DetailKV_By_TenKD(strTen, "KV_ID");
    }

    /// <summary>
    /// Lấy danh sách khu vực by parent ID
    /// Author: ThuanNH
    /// Create: 04/09/2013
    /// </summary>
    /// <param name="KV_ID">Mã khu vực</param>
    /// <returns></returns>
    public static DataTable fncGetKhuVucBy_ParentID(string kv_parentid)
    {
        DataTable dtTinhThanh = null;
        try
        {
            dtTinhThanh = OsPortal.oDataHelper.filterData(GetAll(), "KV_PARENTID='" + kv_parentid + "'");
        }
        catch (Exception ex)
        {
            OsPortal.oFileHelper.WriteLogErr(strClassName, "fncGetKhuVucBy_ID", ex.ToString());
        }
        return dtTinhThanh;
    }

    /// <summary>
    /// Lấy bất kỳ tham số nào của khu vực bằng tên không dấu
    /// </summary>
    /// <returns></returns>
    public static string fncGetValue_DetailKV_By_TenKD(string strTenKD, string strValue)
    {
        string strResult = "";
        try
        {
            DataTable dt = OsPortal.oDataHelper.filterData(GetAll(), "KV_TENKHONGDAU='" + strTenKD + "'");
            if (dt == null) { return ""; }
            if (dt.Rows.Count <= 0) { return ""; }

            strResult = dt.Rows[0]["" + strValue + ""].ToString();
        }
        catch (Exception ex)
        {
            OsPortal.oFileHelper.WriteLogErr(strClassName, "fncGetValue_DetailKV_By_TenKD", ex.ToString());
            strResult = "";
        }
        return strResult;
    }


    /// <summary>
    /// Kiểm tra tên khu vực này có phải là tỉnh thành không?
    /// Author: ThuanNH
    /// Create: 15/10/2013
    /// </summary>
    /// <param name="str_kv_tenkhongdau">Tên khu vực không dấu</param>
    /// <returns></returns>
    public static bool fncCheckParentKhuVuc(string strTenkhongdau)
    {
        try
        {
            string strParentID = fncGetValue_DetailKV_By_TenKD(strTenkhongdau, "KV_PARENTID");
            if (strParentID == "0") return true;
            else return false;
        }
        catch (Exception ex)
        {
            OsPortal.oFileHelper.WriteLogErr(strClassName, "fncGetKhuVucBy_ID", ex.ToString());
            return false;
        }
    }

    /// <summary>
    /// Lấy bất kỳ tham số nào của khu vực bằng ID
    /// </summary>
    /// <returns></returns>
    public static string fncGetValue_DetailKV_By_ID(string strKV_ID, string strValue)
    {
        string strResult = "";
        try
        {
            DataTable dt = OsPortal.oDataHelper.filterData(GetAll(), "KV_ID='" + strKV_ID + "'");
            if (dt == null) { return ""; }
            if (dt.Rows.Count <= 0) { return ""; }

            strResult = dt.Rows[0]["" + strValue + ""].ToString();
        }
        catch (Exception ex)
        {
            OsPortal.oFileHelper.WriteLogErr(strClassName, "fncGetValue_DetailKV_By_TenKD", ex.ToString());
            strResult = "";
        }
        return strResult;
    }
}